{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# PyDMD"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Tutorial 7: Dynamic mode decomposition with control"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "In this tutorial we will show how extend the dynamic mode decomposition to incorporate the effect of control (this technique has been introduced in the paper [Dynamic mode decomposition with control](https://arxiv.org/abs/1409.6358))."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "First of all we import the `DMDc` class from the PyDMD package, we set matplotlib for the notebook and we import numpy and scipy."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "%matplotlib inline\n",
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "import scipy\n",
    "\n",
    "from pydmd import DMDc"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now, we create our dataset: since we want to add the control, the evolution of the complex system can be formally summarized as:\n",
    "$$\n",
    "\\mathbf{x}_{k+1} = \\mathbf{A}\\mathbf{x}_k + \\mathbf{B}\\mathbf{u}_k,\n",
    "$$where the operators $\\mathbf{A}$ and $\\mathbf{B}$ are the ones we will approximate using DMD. So, for a demostrative purpose, we create the original snapshots by using two random operators."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "def create_system(n, m):\n",
    "    A = scipy.linalg.helmert(n, True)\n",
    "    B = np.random.rand(n, n)-.5\n",
    "    x0 = np.array([0.25]*n)\n",
    "    u = np.random.rand(n, m-1)-.5\n",
    "    snapshots = [x0]\n",
    "    for i in range(m-1):\n",
    "        snapshots.append(A.dot(snapshots[i])+B.dot(u[:, i]))\n",
    "    snapshots = np.array(snapshots).T\n",
    "    return {'snapshots': snapshots, 'u': u, 'B': B, 'A': A}"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We got 25 snapshots of the evolving system."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(25, 10)\n"
     ]
    }
   ],
   "source": [
    "s = create_system(25, 10)\n",
    "print(s['snapshots'].shape)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now, we can compute as usually the DMD algorithm on the data: the `fit` method in this version take as arguments the snapshots and the control input (the $\\mathbf{B}$ operator can be also passed). In this case, we don't perform any truncation."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "dmdc = DMDc(svd_rank=-1)\n",
    "dmdc.fit(s['snapshots'], s['u'])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let's visualize the original system and the reconstructed one: also because the no truncation, the plots are the same!"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f9ab9662e10>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(16,6))\n",
    "\n",
    "plt.subplot(121)\n",
    "plt.title('Original system')\n",
    "plt.pcolor(s['snapshots'].real)\n",
    "plt.colorbar()\n",
    "\n",
    "plt.subplot(122)\n",
    "plt.title('Reconstructed system')\n",
    "plt.pcolor(dmdc.reconstructed_data().real)\n",
    "plt.colorbar()\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Well, we built the approximation for $\\mathbf{A}$ and for $\\mathbf{B}$; we can now test the system with a different control input: differently by the other versions, we can pass as argument of the `reconstructed_data` method the control input we want to test."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\nF7toekDLdgQAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f9ab96629e8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "new_u = np.exp(s['u'])\n",
    "\n",
    "plt.figure(figsize=(8,6))\n",
    "plt.pcolor(dmdc.reconstructed_data(new_u).real)\n",
    "plt.colorbar()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Finally, we can also use a different timestep for the reconstruction, obviously passing the proper control input (the number of inputs we pass has to be the number of reconstructed snapshots we try to compute, except for the first snapshots). We continue halving the timestep and create a new random input."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f9ab67afeb8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "dmdc.dmd_time['dt'] = .5\n",
    "new_u = np.random.rand(s['u'].shape[0], dmdc.dynamics.shape[1]-1)\n",
    "\n",
    "plt.figure(figsize=(8,6))\n",
    "plt.pcolor(dmdc.reconstructed_data(new_u).real)\n",
    "plt.colorbar()\n",
    "plt.show()"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
